ECommerce Admin Dashboard Design
Preview
Edit
Download
Run
Download Options
HTML File
Download as .html file
CSS File
Download as .css file
JavaScript File
Download as .js file
Combined HTML
All code in one HTML file
Project ZIP
All files in a ZIP archive
Cancel
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>E-Commerce Admin Dashboard</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet"> </head> <body> <!-- Sidebar --> <div class="sidebar"> <div class="sidebar-header"> <div class="logo"> <!-- <img src="https://via.placeholder.com/40" alt="Logo"> --> <span class="logo-text">ShopAdmin</span> </div> <button class="toggle-btn"> <i class="fas fa-angle-left"></i> </button> </div> <div class="sidebar-menu"> <div class="menu-title">Main</div> <a href="#" class="menu-item active"> <div class="menu-icon"> <i class="fas fa-tachometer-alt"></i> </div> <div class="menu-text">Dashboard</div> </a> <div class="menu-title">E-Commerce</div> <a href="#" class="menu-item"> <div class="menu-icon"> <i class="fas fa-shopping-bag"></i> </div> <div class="menu-text">Products</div> <div class="menu-badge">5</div> </a> <a href="#" class="menu-item"> <div class="menu-icon"> <i class="fas fa-list"></i> </div> <div class="menu-text">Categories</div> </a> <a href="#" class="menu-item"> <div class="menu-icon"> <i class="fas fa-truck"></i> </div> <div class="menu-text">Orders</div> <div class="menu-badge">12</div> </a> <a href="#" class="menu-item"> <div class="menu-icon"> <i class="fas fa-users"></i> </div> <div class="menu-text">Customers</div> </a> <div class="menu-title">Marketing</div> <a href="#" class="menu-item"> <div class="menu-icon"> <i class="fas fa-bullhorn"></i> </div> <div class="menu-text">Promotions</div> </a> <a href="#" class="menu-item"> <div class="menu-icon"> <i class="fas fa-chart-line"></i> </div> <div class="menu-text">Reports</div> </a> <a href="#" class="menu-item"> <div class="menu-icon"> <i class="fas fa-cog"></i> </div> <div class="menu-text">Settings</div> </a> </div> </div> <!-- Mobile Menu Button (visible only on small screens) --> <button class="mobile-menu-btn" style="display: none;"> <i class="fas fa-bars"></i> </button> <!-- Main Content --> <div class="main-content"> <!-- Top Navigation --> <div class="top-nav"> <div class="search-bar"> <i class="fas fa-search search-icon"></i> <input type="text" placeholder="Search..."> </div> <div class="user-actions"> <button class="notification-btn"> <i class="fas fa-bell"></i> <span class="notification-badge">3</span> </button> <button class="message-btn"> <i class="fas fa-envelope"></i> <span class="message-badge">5</span> </button> <div class="user-profile"> <img src="https://via.placeholder.com/40" alt="User" class="user-avatar"> <span class="user-name">Admin</span> </div> </div> </div> <!-- Dashboard Content --> <div class="dashboard-content"> <div class="card"> <div class="card-header"> <div> <div class="card-title">Total Sales</div> <div class="card-value">$24,780</div> <div class="card-change positive"> <i class="fas fa-arrow-up"></i> 12.5% from last month </div> </div> <div class="card-icon sales"> <i class="fas fa-dollar-sign"></i> </div> </div> </div> <div class="card"> <div class="card-header"> <div> <div class="card-title">Total Orders</div> <div class="card-value">1,245</div> <div class="card-change positive"> <i class="fas fa-arrow-up"></i> 8.3% from last month </div> </div> <div class="card-icon orders"> <i class="fas fa-shopping-cart"></i> </div> </div> </div> <div class="card"> <div class="card-header"> <div> <div class="card-title">Total Revenue</div> <div class="card-value">$18,560</div> <div class="card-change positive"> <i class="fas fa-arrow-up"></i> 5.7% from last month </div> </div> <div class="card-icon revenue"> <i class="fas fa-chart-pie"></i> </div> </div> </div> <div class="card"> <div class="card-header"> <div> <div class="card-title">Total Customers</div> <div class="card-value">8,742</div> <div class="card-change negative"> <i class="fas fa-arrow-down"></i> 2.1% from last month </div> </div> <div class="card-icon customers"> <i class="fas fa-users"></i> </div> </div> </div> </div> <!-- Charts Section --> <div class="charts-section"> <div class="chart-card"> <div class="chart-header"> <div class="chart-title">Sales Overview</div> <div class="chart-actions"> <button class="chart-btn active">Week</button> <button class="chart-btn">Month</button> <button class="chart-btn">Year</button> </div> </div> <div class="chart-container"> <!-- Chart will be rendered here --> <img src="https://via.placeholder.com/800x300?text=Sales+Chart" alt="Sales Chart" style="width: 100%; height: 100%; object-fit: cover;"> </div> </div> <div class="chart-card"> <div class="chart-header"> <div class="chart-title">Revenue Sources</div> <div class="chart-actions"> <button class="chart-btn active">Week</button> <button class="chart-btn">Month</button> </div> </div> <div class="chart-container"> <!-- Chart will be rendered here --> <img src="https://via.placeholder.com/400x300?text=Revenue+Chart" alt="Revenue Chart" style="width: 100%; height: 100%; object-fit: cover;"> </div> </div> </div> <!-- Recent Orders Section --> <div class="recent-orders"> <div class="section-header"> <div class="section-title">Recent Orders</div> <a href="#" class="view-all">View All</a> </div> <table class="orders-table"> <thead> <tr> <th>Order ID</th> <th>Customer</th> <th>Date</th> <th>Amount</th> <th>Status</th> <th>Action</th> </tr> </thead> <tbody> <tr> <td>#ORD-7841</td> <td>John Smith</td> <td>12 May 2023</td> <td>$245.99</td> <td><span class="order-status status-completed">Completed</span></td> <td> <div class="order-actions"> <button class="action-btn"><i class="fas fa-eye"></i></button> <button class="action-btn"><i class="fas fa-print"></i></button> </div> </td> </tr> <tr> <td>#ORD-7839</td> <td>Sarah Johnson</td> <td>11 May 2023</td> <td>$189.50</td> <td><span class="order-status status-processing">Processing</span></td> <td> <div class="order-actions"> <button class="action-btn"><i class="fas fa-eye"></i></button> <button class="action-btn"><i class="fas fa-print"></i></button> </div> </td> </tr> <tr> <td>#ORD-7835</td> <td>Michael Brown</td> <td>10 May 2023</td> <td>$320.00</td> <td><span class="order-status status-pending">Pending</span></td> <td> <div class="order-actions"> <button class="action-btn"><i class="fas fa-eye"></i></button> <button class="action-btn"><i class="fas fa-print"></i></button> </div> </td> </tr> <tr> <td>#ORD-7828</td> <td>Emily Davis</td> <td>9 May 2023</td> <td>$145.75</td> <td><span class="order-status status-completed">Completed</span></td> <td> <div class="order-actions"> <button class="action-btn"><i class="fas fa-eye"></i></button> <button class="action-btn"><i class="fas fa-print"></i></button> </div> </td> </tr> <tr> <td>#ORD-7821</td> <td>Robert Wilson</td> <td>8 May 2023</td> <td>$89.99</td> <td><span class="order-status status-cancelled">Cancelled</span></td> <td> <div class="order-actions"> <button class="action-btn"><i class="fas fa-eye"></i></button> <button class="action-btn"><i class="fas fa-print"></i></button> </div> </td> </tr> </tbody> </table> </div> </div> </body> </html>
CSS
:root { --primary: #4361ee; --primary-light: #e6f0fd; --secondary: #3f37c9; --success: #4cc9f0; --danger: #f72585; --warning: #f8961e; --info: #4895ef; --dark: #212529; --light: #f8f9fa; --sidebar-width: 250px; --sidebar-collapsed-width: 80px; --transition-speed: 0.3s; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; } body { background-color: #f5f7fb; overflow-x: hidden; } /* Sidebar Styles */ .sidebar { position: fixed; top: 0; left: 0; height: 100vh; width: var(--sidebar-width); background: white; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); transition: all var(--transition-speed) ease; z-index: 1000; overflow-y: auto; } .sidebar.collapsed { width: var(--sidebar-collapsed-width); } .sidebar-header { display: flex; align-items: center; justify-content: space-between; padding: 20px; border-bottom: 1px solid #eee; height: 80px; } .logo { display: flex; align-items: center; } .logo img { width: 40px; height: 40px; margin-right: 10px; } .logo-text { font-size: 18px; font-weight: 600; color: var(--dark); white-space: nowrap; transition: opacity var(--transition-speed); } .sidebar.collapsed .logo-text { opacity: 0; width: 0; } .toggle-btn { background: none; border: none; font-size: 20px; cursor: pointer; color: var(--dark); transition: transform var(--transition-speed); } .sidebar.collapsed .toggle-btn { transform: rotate(180deg); } .sidebar-menu { padding: 20px 0; } .menu-title { padding: 10px 20px; font-size: 12px; text-transform: uppercase; color: #aaa; font-weight: 600; letter-spacing: 1px; white-space: nowrap; transition: opacity var(--transition-speed); } .sidebar.collapsed .menu-title { opacity: 0; width: 0; } .menu-item { display: flex; align-items: center; padding: 12px 20px; margin: 5px 0; color: #555; text-decoration: none; border-radius: 5px; transition: all 0.3s ease; white-space: nowrap; } .menu-item:hover { background-color: var(--primary-light); color: var(--primary); } .menu-item.active { background-color: var(--primary-light); color: var(--primary); font-weight: 500; } .menu-icon { font-size: 18px; margin-right: 15px; width: 20px; text-align: center; } .menu-text { transition: opacity var(--transition-speed); } .sidebar.collapsed .menu-text { opacity: 0; width: 0; } .menu-badge { margin-left: auto; background-color: var(--danger); color: white; font-size: 10px; padding: 3px 6px; border-radius: 10px; } /* Main Content Styles */ .main-content { margin-left: var(--sidebar-width); transition: margin-left var(--transition-speed); min-height: 100vh; padding: 20px; } .sidebar.collapsed + .main-content { margin-left: var(--sidebar-collapsed-width); } /* Top Navigation */ .top-nav { display: flex; justify-content: space-between; align-items: center; padding: 15px 25px; background: white; border-radius: 10px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); margin-bottom: 20px; } .search-bar { position: relative; width: 400px; } .search-bar input { width: 100%; padding: 10px 15px 10px 40px; border: 1px solid #ddd; border-radius: 30px; outline: none; transition: all 0.3s; } .search-bar input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); } .search-icon { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); color: #aaa; } .user-actions { display: flex; align-items: center; gap: 20px; } .notification-btn, .message-btn { position: relative; background: none; border: none; font-size: 18px; color: #555; cursor: pointer; } .notification-badge, .message-badge { position: absolute; top: -5px; right: -5px; background-color: var(--danger); color: white; border-radius: 50%; width: 18px; height: 18px; font-size: 10px; display: flex; align-items: center; justify-content: center; } .user-profile { display: flex; align-items: center; gap: 10px; } .user-avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; } .user-name { font-weight: 500; } /* Dashboard Content */ .dashboard-content { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; margin-bottom: 20px; } .card { background: white; border-radius: 10px; padding: 20px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); transition: transform 0.3s, box-shadow 0.3s; } .card:hover { transform: translateY(-5px); box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); } .card-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } .card-title { font-size: 16px; font-weight: 500; color: #555; } .card-icon { width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 18px; color: white; } .card-icon.sales { background-color: var(--primary); } .card-icon.orders { background-color: var(--success); } .card-icon.revenue { background-color: var(--warning); } .card-icon.customers { background-color: var(--danger); } .card-value { font-size: 24px; font-weight: 600; color: var(--dark); margin-bottom: 5px; } .card-change { font-size: 12px; display: flex; align-items: center; } .card-change.positive { color: #28a745; } .card-change.negative { color: #dc3545; } /* Charts Section */ .charts-section { display: grid; grid-template-columns: 2fr 1fr; gap: 20px; margin-bottom: 20px; } .chart-card { background: white; border-radius: 10px; padding: 20px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); } .chart-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .chart-title { font-size: 18px; font-weight: 500; } .chart-actions { display: flex; gap: 10px; } .chart-btn { background: none; border: 1px solid #ddd; border-radius: 5px; padding: 5px 10px; font-size: 12px; cursor: pointer; transition: all 0.3s; } .chart-btn.active { background-color: var(--primary); color: white; border-color: var(--primary); } .chart-container { height: 300px; position: relative; } /* Recent Orders Section */ .recent-orders { background: white; border-radius: 10px; padding: 20px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); } .section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .section-title { font-size: 18px; font-weight: 500; } .view-all { color: var(--primary); text-decoration: none; font-size: 14px; transition: all 0.3s; } .view-all:hover { text-decoration: underline; } .orders-table { width: 100%; border-collapse: collapse; } .orders-table th { text-align: left; padding: 12px 15px; background-color: #f8f9fa; font-weight: 500; color: #555; } .orders-table td { padding: 12px 15px; border-bottom: 1px solid #eee; } .order-status { padding: 5px 10px; border-radius: 20px; font-size: 12px; font-weight: 500; } .status-pending { background-color: #fff3cd; color: #856404; } .status-completed { background-color: #d4edda; color: #155724; } .status-processing { background-color: #cce5ff; color: #004085; } .status-cancelled { background-color: #f8d7da; color: #721c24; } .order-actions { display: flex; gap: 10px; } .action-btn { background: none; border: none; color: #555; cursor: pointer; transition: all 0.3s; } .action-btn:hover { color: var(--primary); } /* Responsive Styles */ @media (max-width: 1200px) { .charts-section { grid-template-columns: 1fr; } } @media (max-width: 992px) { .sidebar { width: var(--sidebar-collapsed-width); } .sidebar .logo-text, .sidebar .menu-title, .sidebar .menu-text { opacity: 0; width: 0; } .sidebar .toggle-btn { transform: rotate(180deg); } .main-content { margin-left: var(--sidebar-collapsed-width); } .search-bar { width: 200px; } } @media (max-width: 768px) { .dashboard-content { grid-template-columns: 1fr 1fr; } .top-nav { flex-direction: column; gap: 15px; padding: 15px; } .search-bar { width: 100%; } .user-actions { width: 100%; justify-content: space-between; } } @media (max-width: 576px) { .dashboard-content { grid-template-columns: 1fr; } .sidebar { width: 0; overflow: hidden; } .main-content { margin-left: 0; } .mobile-menu-btn { display: block; position: fixed; top: 15px; left: 15px; z-index: 1001; background: var(--primary); color: white; border: none; width: 40px; height: 40px; border-radius: 50%; font-size: 20px; cursor: pointer; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); } .sidebar.show { width: var(--sidebar-width); } .sidebar.show .logo-text, .sidebar.show .menu-title, .sidebar.show .menu-text { opacity: 1; width: auto; } } /* Animations */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .card { animation: fadeIn 0.5s ease forwards; } .card:nth-child(1) { animation-delay: 0.1s; } .card:nth-child(2) { animation-delay: 0.2s; } .card:nth-child(3) { animation-delay: 0.3s; } .card:nth-child(4) { animation-delay: 0.4s; } @keyframes slideInRight { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } } .chart-card, .recent-orders { animation: slideInRight 0.5s ease forwards; } .chart-card { animation-delay: 0.2s; } .recent-orders { animation-delay: 0.3s; }
JavaScript
// Toggle sidebar document.querySelector('.toggle-btn').addEventListener('click', function() { document.querySelector('.sidebar').classList.toggle('collapsed'); }); // Mobile menu toggle const mobileMenuBtn = document.querySelector('.mobile-menu-btn'); const sidebar = document.querySelector('.sidebar'); mobileMenuBtn.addEventListener('click', function() { sidebar.classList.toggle('show'); }); // Responsive check function checkScreenSize() { if (window.innerWidth <= 576) { mobileMenuBtn.style.display = 'block'; sidebar.classList.remove('collapsed'); } else { mobileMenuBtn.style.display = 'none'; sidebar.classList.remove('show'); } } // Initial check checkScreenSize(); // Add resize event listener window.addEventListener('resize', checkScreenSize); // Chart buttons functionality const chartBtns = document.querySelectorAll('.chart-btn'); chartBtns.forEach(btn => { btn.addEventListener('click', function() { // Remove active class from all buttons in the same container this.parentElement.querySelectorAll('.chart-btn').forEach(b => { b.classList.remove('active'); }); // Add active class to clicked button this.classList.add('active'); // Here you would typically update the chart data based on the selected period // For this example, we'll just log the action console.log(`Showing ${this.textContent} data`); }); }); // Menu item active state const menuItems = document.querySelectorAll('.menu-item'); menuItems.forEach(item => { item.addEventListener('click', function(e) { e.preventDefault(); // Remove active class from all menu items menuItems.forEach(i => { i.classList.remove('active'); }); // Add active class to clicked item this.classList.add('active'); }); });
Output Preview
Desktop
Mobile
Fullscreen